/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package invsys.Controladores;

import invsys.Modelo.Usuario;


import invsys.Utilidades.ManejadorBaseDatos;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;
import javax.swing.JOptionPane;

/**
 *
 * @author luigie
 */
public class ControlUsuario {
  public static Usuario load(ResultSet rs) throws SQLException{
        Usuario u=new Usuario();
        u.setId(rs.getString(1));
        u.setNombre(rs.getString(2));
        u.setApellido(rs.getString(3));
        u.setDireccion(rs.getString(4));
        u.setTelefono(rs.getString(5));
        u.setCelular(rs.getString(6));
        u.setUsuario(rs.getString(7));
        u.setClave(rs.getString(8));
        u.setTipo(rs.getString(9));
            
        return u;
    }   
  private static List usuarios;
  public static Connection con;
  public static void RegistrarUsuario(Usuario u) throws SQLException, IOException, Exception {
        ManejadorBaseDatos mbd = ManejadorBaseDatos.getInstancia();
        mbd.conectar();
        con = mbd.getConexion();
        if (con == null) {
            throw new SQLException(" no hay conexion ");
        }
        PreparedStatement pst = null;

        try {

            pst = con.prepareStatement("Insert Into usuarios values(?,?,?,?,?,?,?,?,?)");
            pst.setString(1, u.getId());
            pst.setString(2, u.getNombre());
            pst.setString(3, u.getApellido());
            pst.setString(4, u.getDireccion());
            pst.setString(5, u.getTelefono());
            pst.setString(6, u.getCelular());
            pst.setString(7, u.getUsuario());
            pst.setString(8, u.getClave());
            pst.setString(9, u.getTipo());
           pst.executeUpdate();
           
        } finally {
            if (pst != null) {
                pst.close();
            }
        }
    }
  public static Usuario iniciarSesion (String nom, String cla)throws SQLException, Exception{
    Usuario us= null;
    ResultSet rs = null;
    PreparedStatement pst = null;
      try {
                ManejadorBaseDatos mbd=ManejadorBaseDatos.getInstancia();
        mbd.conectar();
        con=mbd.getConexion();
               pst = con.prepareStatement("select * from usuarios where usuario =? and clave=?");
               pst.setString(1, nom.trim()); 
               pst.setString(2, cla.trim());
               rs = pst.executeQuery();
               while (rs.next()) {
                   us = load(rs);
               }
            } finally{
                if(pst !=null) pst.close();
                 if(rs !=null) rs.close();
            }
          
    

    return us;
}
  public static Usuario ConsultarExistenciaAdmin() throws SQLException{
      
         ResultSet rs = null;
         PreparedStatement pst = null;
         Usuario usuario= null;
     try {
         ManejadorBaseDatos mbd=ManejadorBaseDatos.getInstancia();
         mbd.conectar();
         con=mbd.getConexion();
         pst = con.prepareStatement("SELECT *FROM usuarios WHERE tipo='Admin'");
        
         rs = pst.executeQuery();
         while(rs.next()) {
             usuario = load(rs);
         }
    } finally {
         if (rs != null) {
            rs.close();
         }
         if (pst != null) {
           pst.close();
         }
          return usuario;
    }
    }
  public static Usuario BuscarUsuarionombre(String nom) throws SQLException{
            if (nom == null) {
          throw new SQLException("No hay elemento clave de la clase usuarios");
        }
         ResultSet rs = null;
         PreparedStatement pst = null;
         Usuario usuario = null;
     try {
         ManejadorBaseDatos mbd=ManejadorBaseDatos.getInstancia();
         mbd.conectar();
         con=mbd.getConexion();
         pst = con.prepareStatement("select * from usuarios where nombre= ?");
         pst.setString(1, nom.trim());

         rs = pst.executeQuery();
         while(rs.next()) {
             usuario = load(rs);
         }
    } finally {
         if (rs != null) {
            rs.close();
         }
         if (pst != null) {
           pst.close();
         }
          return usuario;
    }
    }
  public static Usuario BuscarUsuarionombrecuenta(String usu) throws SQLException{
            if (usu== null) {
          throw new SQLException("No hay elemento clave de la clase usuarios");
        }
         ResultSet rs = null;
         PreparedStatement pst = null;
         Usuario usuario = null;
     try {
         ManejadorBaseDatos mbd=ManejadorBaseDatos.getInstancia();
         mbd.conectar();
         con=mbd.getConexion();
         pst = con.prepareStatement("select * from usuarios where usuario=?");
         pst.setString(1, usu.trim());

         rs = pst.executeQuery();
         while(rs.next()) {
             usuario = load(rs);
         }
    } finally {
         if (rs != null) {
            rs.close();
         }
         if (pst != null) {
           pst.close();
         }
          return usuario;
    }
    }
  public static Usuario BuscarUsuario(String ide) throws SQLException{
            if (ide == null) {
          throw new SQLException("No hay elemento clave de la clase usuarios");
        }
         ResultSet rs = null;
         PreparedStatement pst = null;
         Usuario usuario = null;
     try {
         ManejadorBaseDatos mbd=ManejadorBaseDatos.getInstancia();
         mbd.conectar();
         con=mbd.getConexion();
         pst = con.prepareStatement("select * from usuarios where id= ?");
         pst.setString(1, ide.trim());

         rs = pst.executeQuery();
         while(rs.next()) {
             usuario = load(rs);
         }
    } finally {
         if (rs != null) {
            rs.close();
         }
         if (pst != null) {
           pst.close();
         }
          return usuario;
    }
    }
  public static void ModificarUsuario(Usuario u, String ide) throws SQLException, Exception {
        if (BuscarUsuario(ide) == null) {
            throw new SQLException("usuario no registrado ");
        }
        PreparedStatement pst = null;

        try {
            ManejadorBaseDatos mbd = ManejadorBaseDatos.getInstancia();
            mbd.conectar();
            con = mbd.getConexion();
            pst = con.prepareStatement("UPDATE usuarios SET id = ? ,"
                    + " nombre = ?,apellido = ?, direccion = ?, telefono = ? ,"
                    + " celular = ?, usuario = ?, clave = ?, tipo = ?  WHERE id = ?");	
            pst.setString(1, u.getId());
            pst.setString(2, u.getNombre());
            pst.setString(3, u.getApellido());
            pst.setString(4, u.getDireccion());
            pst.setString(5, u.getTelefono());
            pst.setString(6, u.getCelular());
            pst.setString(7, u.getUsuario());
            pst.setString(8, u.getClave());
            pst.setString(9, u.getTipo());
            pst.setString(10, ide);
            pst.executeUpdate();

        } finally {
            if (pst != null) {
                pst.close();
            }
        }

    }
  public static void listarUsuario() throws SQLException, Exception {
     ResultSet rs = null;
     PreparedStatement pst = null;
     usuarios = new LinkedList();
     try {
         ManejadorBaseDatos mbd=ManejadorBaseDatos.getInstancia();
         mbd.conectar();
         con=mbd.getConexion();
        pst = con.prepareStatement("select * from empleado ");
        rs = pst.executeQuery();
        while(rs.next()) {
           usuarios.add(load(rs));
        }
    } finally {
        if (rs != null) {
           rs.close();
       }
        if (pst != null) {
          pst.close();
       }
}
}
  public static boolean ExisteUsuario(int ide){
        boolean existe=false;

        return existe;
    }
  public static void EliminarUsuario(String ide) throws SQLException, Exception {
        if (BuscarUsuario(ide) == null) {
            throw new SQLException("No hay elemento clave de la clase Usuario");
        }
        PreparedStatement pst = null;

        try {
            ManejadorBaseDatos mbd = ManejadorBaseDatos.getInstancia();
            mbd.conectar();
            con = mbd.getConexion();
            pst = con.prepareStatement("delete from usuarios where id = ?");
            pst.setString(1, ide.trim());
            pst.executeUpdate();

        } finally {
            if (pst != null) {
                pst.close();
            }
        }

    }
  public static void listarUsuario1(String sql) throws SQLException, Exception {
     ResultSet rs = null;
     PreparedStatement pst = null;
     usuarios = new LinkedList();
     try {
         ManejadorBaseDatos mbd=ManejadorBaseDatos.getInstancia();
         mbd.conectar();
         con=mbd.getConexion();
        pst = con.prepareStatement(sql);
        rs = pst.executeQuery();
        while(rs.next()) {
           usuarios.add(load(rs));
        }
    } finally {
        if (rs != null) {
           rs.close();
       }
        if (pst != null) {
          pst.close();
       }
}
}
  public static void setUsuario(List aEmpleado) {
        usuarios = aEmpleado;
    }
  public static List getUsuario() {
        return usuarios;
    }


}
